home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / mcu11 / basic11.arc / IOPKG.ASM < prev    next >
Assembly Source File  |  1990-10-10  |  5KB  |  155 lines

  1.          TTL    IOPKG
  2.          PAG
  3. *
  4. *
  5. OUTBYTE  EQU    *
  6.          INC    PRINTPOS     INCREMENT THE CURRENT PRINT POSITION.
  7.          PSHB                SAVE THE B-REG.
  8.          PSHX                SAVE THE X-REG.
  9.          LDX    #OUTABLE     POINT TO THE OUTPUT VECTOR TABLE.
  10. OUTBYTE1 LDAB   DEVNUM       GET THE CURRENT DEVICE NUMBER.
  11.          ASLB                MULT BY 2.
  12.          ABX                 POINT TO THE ADDRESS OF THE OUTPUT ROUTINE.
  13.          LDX    0,X          GET THE ADDRESS. HAS THE VECTOR BEEN INITALIZED?
  14.          BNE    OUTBYTE2     YES. GO OUTPUT THE CHARACTER.
  15.          CLR    DEVNUM       NO. RESET TO DEVICE #0.
  16.          LDAA   #UNINIERR    GO REPORT AN UNINITALIZED I/O VECTOR ERROR.
  17.          JMP    RPTRERR
  18. OUTBYTE2 JSR    0,X          GO OUTPUT THE CHARACTER.
  19.          PULX                RESTORE X.
  20.          PULB                RESTORE B.
  21.          RTS                 RETURN.
  22. *
  23. INBYTE   EQU    *
  24.          PSHB                SAVE THE B-REG.
  25.          PSHX                SAVE THE X-REG.
  26.          LDX    #INTABLE     POINT TO THE INPUT VECTOR TABLE.
  27.          BRA    OUTBYTE1     GO USE THE SAME CODE AS OUTBYTE.
  28. *
  29. *
  30.     if    *>$FF00
  31.     error    "BASIC Is Too Large"
  32.     endif
  33. *
  34. *
  35.     ORG    $FF00
  36. *
  37. *
  38. ACIAIN   BSR    ACIAINNE     GO GET CHARACTER FROM ACIA, NO ECHO.
  39. *                            NOW, FALL THROUGH TO ACIAOUT TO ECHO CHARACTER.
  40. *
  41. *
  42. ACIAOUT  PSHA                SAVE THE CHARACTER TO OUTPUT.
  43. ACIAOUT1 LDAA   ACIAST       GET THE ACIA STATUS.
  44.          BITA   #$02         IS THE XMIT DATA REGISTER EMPTY?
  45.          BEQ    ACIAOUT1     NO. WAIT TILL IT IS.
  46.          PULA                YES. GET BYTE TO SEND.
  47.          STAA   ACIADT       SEND IT.
  48.          RTS                 RETURN.
  49. *
  50. *
  51. *
  52. *
  53. *
  54. *
  55. ACIAINNE LDAA   ACIAST       GET THE ACIA STATUS.
  56.          BITA   #$01         HAS A CHARACTER BEEN RECIEVED?
  57.          BEQ    ACIAINNE     NO. WAIT TILL WE HAVE ONE.
  58.          LDAA   ACIADT       YES. GET THE CHARACTER.
  59.          RTS                 RETURN.
  60. *
  61. ACIASTAT EQU    *
  62.          PSHA                SAVE THE A-REG.
  63.          LDAA   ACIAST       GET THE ACIA STATUS.
  64.          BITA   #$01         CHECK FOR A CHARACTER.
  65.          PULA                RESTORE A.
  66.          RTS                 RETURN.
  67. *
  68. *
  69. SCIIN    EQU    *
  70.      PSHX             Save the index register.
  71.      LDX    IOBaseV
  72. SCIIN1   LDAA   SCSR,X       GET SCI STATUS.
  73.          ANDA   #$20         HAS A CHARACTER BEEN RECIEVED?
  74.          BEQ    SCIIN1       NO. WAIT FOR CHARACTER TO BE RECIEVED.
  75.          LDAA   SCDR,X       GET THE CHARACTER.
  76.      PULX             Restore X.
  77.          RTS                 RETURN.
  78. *
  79. *
  80. SCIOUT   EQU    *
  81.      PSHX             Save the index register.
  82.      LDX    IOBaseV
  83.          PSHA               SAVE THE CHARACTER TO SEND.
  84. SCIOUT1  LDAA   SCSR,X      GET THE SCI STATUS.
  85.          BITA   #$80        HAS THE LAST CHARACTER BEEN SHIFTED OUT?
  86.          BEQ    SCIOUT1     NO. WAIT TILL IT HAS.
  87.          PULA               RESTORE CHARACTER TO SEND.
  88.          STAA   SCDR,X      SEND THE CHARACTER.
  89.      PULX             Restore X.
  90.          RTS                RETURN.
  91. *
  92. *
  93. SCISTAT  EQU    *
  94.      PSHX             Save the index register.
  95.      LDX    IOBaseV
  96.          PSHA               SAVE THE A-REG.
  97.          LDAA   SCSR,X      GET THE SCI STATUS.
  98.          BITA   #$20        CHECK TO SEE IF A CHARACTER HAS BEEN RECIEVED.
  99.          PULA               RESTORE STATUS.
  100.      PULX            Restore X.
  101.          RTS                RETURN W/ STATUS.
  102. *
  103. *
  104. IODevInit:
  105.     BSR    InitACIA
  106.     BSR    InitSCI
  107.     LDAA    #JMPOP
  108.         STAA    CONSTAT        INITIALIZE THE CONSOLE STATUS VECTOR.
  109.         STAA    INCONNE        INITIALIZE THE "INPUT FROM CONSOLE NO ECHO VECT.
  110.         LDD     #ACIASTAT    CONSOLE IS INITIALLY THE ACIA.
  111.         STD    CONSTAT+1
  112.         LDD    #ACIAINNE    GET BYTE FROM ACIA, DON'T ECHO IT.
  113.         STD    INCONNE+1
  114.     RTS
  115. *
  116. *
  117. INITSCI  EQU    *
  118.      PSHX             Save the index register.
  119.      LDX    IOBaseV
  120.          LDAA   #$30        SET BAUD RATE TO 9600.
  121.          STAA   BAUD,X
  122.          CLR    SCCR1,X     SET FOR 8 BIT OPERATION, DISABLE WAKEUP.
  123.          LDAA   #$0C        ENABLE THE TRANSMITER & RECEIVER.
  124.          STAA   SCCR2,X
  125.          LDAA   #$11        GET THE XON CHARACTER (CONTROL-Q).
  126.          STAA   XONCH       INITALIZE THE XON REGISTER.
  127.          LDAA   #$13        GET THE XOFF CHARACTER (CONTROL-S).
  128.          STAA   XOFFCH      INITALIZE THE XOFF CHARACTER.
  129.      PULX
  130.          RTS                RETURN.
  131. *
  132. *
  133. INITACIA LDAA   #$13         VALUE TO RESET THE ACIA.
  134.          STAA   ACIAST       RESET IT.
  135.          LDAA   #$56         SET /64, RTS=HI, 8-DATA/1 STOP
  136.          STAA   ACIAST
  137.          RTS                 RETURN.
  138. *
  139. *
  140. *
  141. PROUT    EQU    *            SEND A CHARACTER TO THE PRINTER.
  142.          BSR    SCISTAT      WAS AN "X-OFF" RECIEVED?
  143.          BEQ    PROUT1       NO. GO SEND THE CHARACTER.
  144.          PSHA                SAVE THE CHARACTER TO SEND.
  145.          BSR    SCIIN        YES. GO RESET THE SCI RECEIVER STATUS.
  146.          CMPA   XOFFCH       WAS IT AN XOFF?
  147.          BNE    PROUT2       NO. SO GO SEND THE CHARACTER.
  148. PROUT3   BSR    SCIIN        GO WAIT FOR AN "X-ON" CHARACTER.
  149.          CMPA   XONCH        IS IT AN X-ON CHARACTER?
  150.          BNE    PROUT3       NO. GO WAIT FOR AN X-ON CHARACTER.
  151. PROUT2   PULA                GET THE CHARACTER TO SEND.
  152. PROUT1   BRA    SCIOUT       SEND THE CHARACTER TO THE PRINTER & RETURN.
  153. *
  154. *
  155.